/**
 * 未测试
 * 格式化父子关系数据为树形结构
 */

/**
 * 将带有父子关系的数据格式化成树形结构数据
 * 带有默认根节点值
 * @param data ：父子关系的数据集合
 * @param attributes ： 涉及到的属性
 * @returns
 */
function toTreeData(data, attributes) {
	let resData = data;
	let tree = [];

	for (let i = 0; i < resData.length; i++) {
		if (resData[i].resParentId === attributes.rootId) {
			let obj = {
				id : resData[i][attributes.id],
				title : resData[i][attributes.name],
				children : []
			};
			tree.push(obj);
			resData.splice(i, 1);
			i--;
		}
	}
	run(tree);
	function run(chiArr) {
		if (resData.length !== 0) {
			for (let i = 0; i < chiArr.length; i++) {
				for (let j = 0; j < resData.length; j++) {
					if (chiArr[i].id === resData[j][attributes.parentId]) {
						let obj = {
							id : resData[j][attributes.id],
							title : resData[j][attributes.name],
							children : []
						};
						chiArr[i].children.push(obj);
						resData.splice(j, 1);
						j--;
					}
				}
				run(chiArr[i].children);
			}
		}
	}
	return tree;
}


/*********调用**********/
//let data = allRes;
//属性配置信息
//let attributes = {
//   id: 'resourcesId',
//   parentId: 'resParentId',
//   name: 'resName',
//   rootId: 1
//};
//let treeData = toTreeData(data, attributes);


/**
 * 将带有父子关系的数据格式化成树形结构数据
 * 不带有根节点默认值
 * @param data： 父子数据集合
 * @param attributes：存储数据的对象
 * @returns
 */
function toTreeData(data, attributes) {
	let resData = data;
	let tree = [];
	//1. 查找父级项（一级），即起始项
	for (let i = 0; i < resData.length; i++) {
		for (let j = 0; j < resData.length; j++) {
			//判断当前的id 是否是其他想的父id，如果是，说明不是第一层
			if (resData[i][attributes.parentId] === resData[j][attributes.id]) {
				break;
			}else{
				if(j == (resData.length -1)){
					//代表是最后一位，还是没有父级，则代表当前的项级别为：1级 即父级。
					let obj = {
							id : resData[j][attributes.id],
							name : resData[j][attributes.name],
							children : []
						};
					tree.push(obj);
				}
			}
		}
	}
	
	run(tree);
	
	function run(chiArr) {
		if (resData.length !== 0) {
			for (let i = 0; i < chiArr.length; i++) {
				for (let j = 0; j < resData.length; j++) {
					if (chiArr[i].id === resData[j][attributes.parentId]) {
						let obj = {
							id : resData[j][attributes.id],
							name : resData[j][attributes.name],
							children : []
						};
						chiArr[i].children.push(obj);
						resData.splice(j, 1);
						j--;
					}
				}
				run(chiArr[i].children);
			}
		}
	}
	return tree;
}

/*****调用方法******/
/*********调用**********/
//let data = allRes;
//属性配置信息
//let attributes = {
// id: 'resourcesId',
// parentId: 'resParentId',
// name: 'resName',
//};
//let treeData = toTreeData(data, attributes);